힙(Heap) 메모리

동적으로 할당되고 해제할 수 있는 메모리 영역
new 로 할당할 수 있다

JVM 옵션에서 초기 힙 크기, 최대 힙 크기를 설정할 수 있다
런타임에 크기가 결정된다. Java에서는 가비지 컬렉터(Garbage Collector, GC)가 힙 영역의 메모리를 관리한다.

구조

예시
public class HeapExample {
    public static void main(String[] args) {
        // 사용자 입력에 따라 리스트 크기가 달라질 수 있음
        Scanner scanner = new Scanner(System.in);
        System.out.print("리스트 크기를 입력하세요: ");
        int size = scanner.nextInt();

        // 런타임에 결정된 크기로 ArrayList 생성
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            list.add(i);
        }

        System.out.println("리스트 크기: " + list.size());
    }
}

이 예시에서 사용자의 입력에 따라 ArrayList의 크기가 결정되고, 프로그램 종료 후 이 메모리는 운영체제에 반환된다